/* 
 * File:   Bitvector.h
 * Author: bluecat
 *
 * Created on 2011年4月19日, 下午6:48
 */

#ifndef BITVECTOR_H
#define	BITVECTOR_H

class Bitvector {
public:
    Bitvector();
    Bitvector(int size);
    Bitvector(const Bitvector& orig);
    virtual ~Bitvector();

    inline void reset(int pos);
    inline void reset();
    inline void set(int pos);
    inline void set();
    inline void flip();
    inline void flip(int pos);
    inline int size();

private:
    static const int UNIT_LENGTH = 16;
    int length;
    int _size;
    unsigned int *data;
    class Index{
        Index();
        Index(int row, int pos);
        int row;
        int pos;
    };
    Index* pos2ind(int pos);
};

#endif	/* BITVECTOR_H */

